একটি ওয়েব অ্যাপ্লিকেশনে ব্যবহারকারী থেকে ইনপুট গ্রহণের সময় Data Validation এবং Input Sanitization দুটি গুরুত্বপূর্ণ সিকিউরিটি প্র্যাকটিস। এগুলো নিশ্চিত করে যে ব্যবহৃত ইনপুট নিরাপদ, সঠিক এবং প্রত্যাশিত আকারে আছে। এটি অ্যাপ্লিকেশনকে একাধিক সিকিউরিটি সমস্যা যেমন SQL Injection, Cross-site Scripting (XSS) এবং Buffer Overflow থেকে রক্ষা করে।
Data Validation হল ইনপুট যাচাই করার প্রক্রিয়া, যা নিশ্চিত করে যে ব্যবহারকারী যে তথ্য প্রদান করছেন তা সঠিক এবং নির্ধারিত মানদণ্ড পূরণ করে। এটি দুটি প্রধান অংশে বিভক্ত:
Client-side Validation (JavaScript ব্যবহার করে):
<form id="myForm" onsubmit="return validateForm()">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Submit</button>
</form>
<script>
function validateForm() {
var email = document.getElementById("email").value;
var pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!pattern.test(email)) {
alert("Please enter a valid email address.");
return false;
}
return true;
}
</script>
এখানে, JavaScript ব্যবহার করে ইনপুট যাচাই করা হচ্ছে, যেখানে Email ইনপুটটি সঠিক ফরম্যাটে থাকতে হবে।
Server-side Validation (C# ASP.NET):
using System;
using System.Text.RegularExpressions;
public bool IsValidEmail(string email)
{
string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
return Regex.IsMatch(email, pattern);
}
এখানে, C# কোড ব্যবহার করে ইমেইল যাচাই করা হচ্ছে যাতে এটি সঠিক ফরম্যাটে থাকে।
Input Sanitization হল ইনপুটের মধ্যে কোনো অপ্রত্যাশিত বা ক্ষতিকর উপাদান থাকা সত্ত্বেও সেটিকে নিরাপদ করতে প্রক্রিয়া। উদাহরণস্বরূপ, ব্যবহারকারী যদি HTML বা স্ক্রিপ্ট ইনপুট দেয়, তাহলে ইনপুটটি sanitize করে তা এক্সিকিউটেবল কোডে পরিণত না হওয়ার ব্যবস্থা করতে হয়। এটি মূলত Cross-site Scripting (XSS) আক্রমণ থেকে রক্ষা করার জন্য ব্যবহৃত হয়।
<
, >
, &
, #
, %
ইত্যাদি বাদ দেয়া বা সেগুলিকে নিরাপদ রূপে কনভার্ট করা।Sanitize HTML Input (C# ASP.NET):
using System.Web;
public string SanitizeInput(string input)
{
return HttpUtility.HtmlEncode(input);
}
এখানে, HttpUtility.HtmlEncode মেথড ব্যবহার করে HTML ইনপুট encode করা হচ্ছে, যাতে ইনপুটের মধ্যে যদি কোনো স্ক্রিপ্ট বা HTML কোড থাকে, তা নিরাপদ আকারে প্রদর্শিত হয়।
Sanitize for SQL Injection:
public string SanitizeSQLInput(string input)
{
return input.Replace("'", "''").Replace(";", ""); // SQL ইনজেকশন আক্রমণ প্রতিরোধ
}
এখানে, SQL ইনপুটে Single Quotes এবং Semicolons সরিয়ে দেওয়া হচ্ছে যাতে SQL ইনজেকশন আক্রমণ বন্ধ করা যায়।
এটি সর্বদা ভালো অভ্যাস যে Data Validation এবং Input Sanitization দুটোই একসাথে ব্যবহার করা উচিত। প্রথমে, ইনপুটটি যাচাই করা উচিত (Validation), এবং তারপর তা নিরাপদ করতে (Sanitization) হবে। এতে করে অ্যাপ্লিকেশনটি সঠিক ইনপুট প্রক্রিয়ায় কাজ করবে এবং তা নিরাপদ থাকবে।
public string ProcessUserInput(string input)
{
// ১. ইনপুট যাচাই
if (!IsValidEmail(input))
{
throw new ArgumentException("Invalid email format.");
}
// ২. ইনপুট স্যানিটাইজেশন
string sanitizedInput = SanitizeInput(input);
// স্যানিটাইজড ইনপুট পরবর্তী প্রসেসিং
return sanitizedInput;
}
এখানে প্রথমে ইমেইল ইনপুটটি যাচাই করা হচ্ছে এবং তারপর সেটিকে স্যানিটাইজ করা হচ্ছে।
Data Validation এবং Input Sanitization দুটি গুরুত্বপূর্ণ প্রযুক্তি, যা অ্যাপ্লিকেশনের নিরাপত্তা এবং সঠিকতা নিশ্চিত করে। Data Validation ইনপুটের সঠিকতা চেক করে, যখন Input Sanitization ইনপুটটিকে নিরাপদ ও উপযুক্ত রূপে কনভার্ট করে। এই দুটি পদ্ধতি একত্রে ব্যবহার করলে নিরাপদ এবং সঠিক ডেটা প্রসেসিং নিশ্চিত করা সম্ভব।
common.read_more